/*
 * Quercia Luciano
 * Algoritmi e Strutture Dati
 * a.a. 2009-10
 */


#include <iostream>
using namespace std;

#include "coda.h"


int main()
{
   typedef Coda<int> Queue;

   Queue q;

   q.printAll();
   q.inCoda(1);
   q.printAll();
   q.inCoda(2);
   q.printAll();
   q.inCoda(3);
   q.printAll();
   q.inCoda(4);
   q.printAll();
   q.inCoda(5);
   q.printAll();

   try {
	   q.fuoriCoda();
	   q.printAll();
	   q.fuoriCoda();
	   q.printAll();
	   q.fuoriCoda();
	   q.printAll();
	   q.fuoriCoda();
	   q.printAll();
	   q.fuoriCoda();
	   q.printAll(); //Empty

	   //Coda Vuota - eccezione sollevata
	   q.fuoriCoda();
	   q.printAll();

   } catch (char const * msg) {
	   cout << msg;
   }

q.inCoda(1);
q.inCoda(2);
q.inCoda(3);
q.inCoda(4);

int k = 0;

while (! q.codaVuota() ){
	k += q.leggiCoda();
	q.fuoriCoda();
}

cout << endl << "La somma vale: " << k << endl;


   return 0;
}
